百面 多层感知机的反向传播算法
在网络训练中,前向传播最终产生一个标量损失函数,反向传播算法则将损失函数的信息沿网络层向后传播用以计算梯度,达到优化网络参数的目的。
问题1
问:写出多层感知机的平方误差和交叉熵损失函数。
答:图片内容说明,图中有平方误差函数以及交叉熵损失函数在二分类和多分类的情况下的表达式。
问题2
问:根据问题1中定义的损失函数,推导各层参数更新的梯度计算公式。
问题3
问:平方误差损失函数和交叉熵损失函数分别适合什么场景?
答:一般来说,平方损失函数更适合输出为连续,并且最后一层不含Sigmoid或Softmax激活函数的神经网络;交叉熵损失则更适合二分类或多分类的场景。
平方损失函数不适合最后一层含有Sigmoid或Softmax激活函数的神经网路的原因是。由(9.23)得,右式最后一项是激活函数的导数,当激活函数为Sigmoid函数时,如果z的绝对值较大,函数的梯度会趋于饱和,即右式最后一项导数的绝对值非常小,导致等式的左边取值非常小,使得基于梯度的学习速度非常缓慢。
当使用交叉熵损失时,激活函数为Softmax,由(9.27),导数是线性的,因此不会存在学习速度过慢的问题。